package com.foxire.innerclass3;

import java.util.Arrays;
import java.util.Comparator;

public class Test4 {
    public static void main(String[] args) {
        // 目标：完成数组排序，理解其中匿名内部类的用法
        // 准备一个学生类型，存放6个学生对象
        Student[] students = new Student[6];
        students[0] = new Student("张三", 18, 180, "男");
        students[1] = new Student("李四", 19, 175, "男");
        students[2] = new Student("王五", 20, 165, "男");
        students[3] = new Student("赵六", 21, 170, "男");
        students[4] = new Student("孙七", 22, 165, "男");
        students[5] = new Student("周八", 23, 180, "男");
        // 对数组排序
        // public static void sort(T[] a,Comparator<T> c)
        // 参数一：需要排序的数组
        // 参数二：比较器，需要给sort一个Comparator比较器对象（指定排序规则）
        // sort方法会调用匿名内部类对象的compare方法，对数组中的学生对象进行两两比较，从而实现排序。
        Arrays.sort(students, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                // 指定排序规则
                // 返回一个整数，如果返回0，表示两个对象相等
                // 如果返回正数，表示第一个对象大于第二个对象
                // 如果返回负数，表示第一个对象小于第二个对象
//                if (o1.getAge() > o2.getAge()) {
//                    return 1;
//                } else if (o1.getAge() < o2.getAge()) {
//                    return -1;
//                }
//                return 0;
//                return o1.getAge() - o2.getAge();// 升序
                 return o2.getAge() - o1.getAge();// 降序
            }
        });

        // 遍历数组中的对象并输出
        for (int i = 0; i < students.length; i++) {
            System.out.println(students[i]);
        }

    }
}
